docs: correct two header claims the last two merges falsified - #77
Merged
Conversation
Both are living statements in source that are now demonstrably false, and both are the kind that stop the next person from finding a bug rather than merely misinforming them. #72 — src/data/shared/build.ts said a seed row "does not go through the stamp hooks (`skipTriggers`)". The flag it cites is real and the seed loader does carry it, but the loader's own docblock says what it suppresses — record-change AUTOMATION, i.e. autolaunched flow triggers — and then says the opposite of this comment in its next sentence: "Lifecycle HOOKS (derived/default fields, validation) still run." So every stamp hook does fire on seeded rows. That is precisely how #65 happened, and a comment asserting hooks cannot reach a seed row is what would have stopped someone looking. Also records `seedReplay`, which is why an ats_offer can be seeded straight into its terminal accepted state. #73 — F4's header said ApplicationStampHook stamps last_activity_at "on every application update, unconditionally". True until #65; now it stamps on any update whose payload names a field of the application. The paragraph's conclusion is unchanged — a stage change is such a payload, so the flow still needs no second writer — but its reason was wrong. Comment-only. No metadata, behaviour or translatable string changes; validate, lint and typecheck all exit 0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PbJ5Cy9KDAzeQHo8bsMadG
os-sam
marked this pull request as ready for review
September 7, 2026 19:56
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #72
Closes #73
Two living statements in source that are now demonstrably false. Both are the kind that stop the next person from finding a bug, not merely the kind that misinform — which is why they are worth a PR rather than a backlog entry.
Comment-only. No metadata, behaviour or translatable string changes.
#72 —
src/data/shared/build.tswas wrong in a more interesting way than the card saysThe header read:
The card that filed this reported the flag as unfounded — "
skipTriggersappears only in that comment" — which is true of this repository but not of the platform. The flag is real, the seed loader does carry it, and it is the reason the sentence is false rather than evidence that it is:@objectstack/metadata-protocol,src/seed-loader.ts, theSEED_OPTIONSdocblock:So the loader documents exactly the distinction this comment collapsed, one sentence later, and the answer is the opposite of what the comment asserted. Every stamp hook in
src/hooks/fires on seeded rows.That is how #65 happened. An unconditional
last_activity_atassignment overwrote the authored value on all 200 applications, and a header stating that hooks cannot reach a seed row is precisely what would have stopped someone from looking there. A false comment that closes off a line of enquiry costs more than one that merely misleads.The rewrite states what the loader actually does, keeps the real reason the seed denormalises explicitly (it should state the facts it means rather than inherit whatever a hook computes today), and records the neighbouring flag while it is in view:
seedReplayskips the object'sstate_machineentry and transition checks, which is why anats_offercan be seeded straight into its terminalacceptedstate — the thing #53 relies on and #64's review verified empirically (818 inserted,errored: 0) without knowing the mechanism.#73 — F4's header, falsified by #65 four hours later
src/flows/application-stage-notify.flow.tsread:True when written; false since #65. The hook now stamps on any update whose payload names a field of the application.
The paragraph's conclusion is unchanged — a stage change is such a payload, so the value is already correct by the time this
record-after-updateflow starts, and the flow still deliberately has no second writer. Only the reason moved, and it now points at the rule rather than at a line that no longer exists.Gates
🤖 Generated with Claude Code
https://claude.ai/code/session_01PbJ5Cy9KDAzeQHo8bsMadG
Generated by Claude Code